package tech.aistar.corejava.day16.listdetails;

import tech.aistar.corejava.day12.homwork.Product;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * @author success
 * @version 1.0
 * @description:本类用来演示:
 * @date 2019/8/5 0005
 */
public class ListDetails {
    public static void main(String[] args) {
        List<Product> list = new ArrayList<>();

        Product p1 = new Product("宝洁","牙膏",100.0);
        Product p2 = new Product("宝洁2","牙膏2",200.0);
        Product p3 = new Product("宝洁3","牙膏3",300.0);

        list.add(p1);
        list.add(p2);
        list.add(p3);

        //利用一个集合list来构建另外一个集合对象
        List<Product> pList = new ArrayList<>(list);

        System.out.println(list == pList);//false

        System.out.println(list.get(0) == pList.get(0));//true

        //涉及到修改list是否对pList造成影响

        //对list集合中的元素进行修改

        //对list集合中的元素没有进行修改

        //static void reverse(List list);//反转集合

        //static void shuffle(List list);//随机打乱集合
        //写一个算法 - 随机打乱一个整数型数组
        //思路:
        //1. 随机一个[0-arr.length-1]的下标
        //将这个下标对应的数据放入到新的数组中temp[pos++] = arr[i];
        //立即到原数组中根据i进行删除操作 - arr = delByIndex(arr,i);
        //一直到arr长度为0结束.
        //返回temp
        //sort方法,shuffle,reverse方法,修改的是list,但是不会对pList造成任何的影响
        //Collections.shuffle(list);
        //反转集合
        //Collections.reverse(list);

        //如果修改的是源集合中的具体的元素的值,那么会对pList集合中的元素产生影响.
        list.get(0).setName("哪吒");

        pList.forEach(System.out::println);
    }
}
